Amazon SNSでメッセージフィルタリングポリシーに合致したサブスクリプションにのみSMSを送信する
こんにちは、CX事業本部 IoT事業部の若槻です。
今回は、Amazon SNSでメッセージフィルタリングポリシーに合致したサブスクリプションにのみSMSを送信してみました。
メッセージフィルタリングポリシーとは
Amazon SNSでは既定ではメッセージを受信したらそのトピックのすべてのサブスクリプションにメッセージ送信が行われますが、サブスクリプションにメッセージフィルタリングポリシーを設定することにより、メッセージの件名や属性値によってそのメッセージを受信するかどうかの条件を設定できます。
メッセージの内容によって通知先を変えたい場合に便利です。
やってみる
トピックの作成
myTopic
を作成します。
サブスクリプションの作成
1つ目のサブスクリプションの作成(SIM01
とします。)
- プロトコル:
SMS
- エンドポイント:
+8170XXXXXXXX
- サブスクリプションフィルターポリシー:
{"target:["SIM01"]"}
2つ目のサブスクリプションの作成(SIM02
とします。)
- プロトコル:
SMS
- エンドポイント:
+8180XXXXXXXX
- サブスクリプションフィルターポリシー:
{"target:["SIM02"]"}
トピックにSMSをエンドポイントとするサブスクリプションを2つ作成できました。
トピックへのメッセージ発行
SIM01
にのみ送信
コンソールで以下の属性を設定したメッセージを発行します。
- メッセージ属性
- タイプ:
String
- 名前:
target
- 値:
SIM01
- タイプ:
SIM01
のスマートフォンでのみSMSを受信しました。
SIM02
にのみ送信
コンソールで以下の属性を設定したメッセージを発行します。
- メッセージ属性
- タイプ:
String
- 名前:
target
- 値:
SIM02
- タイプ:
SIM02
のスマートフォンでのみSMSを受信しました。
SIM01
およびSIM02
に送信
コンソールで以下の属性を設定したメッセージを発行します。
- メッセージ属性
- タイプ:
String.Array
- 名前:
target
- 値:
["SIM01","SIM02"]
- タイプ:
SIM01
とSIM02
の両方のスマートフォンでSMSを受信できました。
備考
- サブスクリプションフィルターポリシーの条件にエンドポイントの値を使用できればポリシーを一律にそうだったのですが、現状できないようです。
- 送信先を頻繁に変更する場合はサブスクリプションのメンテナンスが大変なので、Amazon Connectを使った方が良さそうです。
参考
- SNSサブスクリプションのフィルタポリシーで良い知らせだけをメール受信する | DevelopersIO
- Amazon SNS でメッセージフィルタリング演算子のセットが増加
- Message Filtering Operators for Numeric Matching, Prefix Matching, and Anything-But Matching in Amazon SNS | AWS Compute Blog
以上